//package com.budwk.app.sqfw.controllers.admin.dataMigration;
//
//
//import com.budwk.app.common.component.DictComponent;
//import com.budwk.app.sqfw.constants.DictConstants;
//import com.budwk.app.sqfw.services.SqfwFormSummaryService;
//import com.budwk.app.sqfw.services.SqfwFormsummaryNewService;
//import com.budwk.app.sqfwV2.component.DayingRoadPdfComponent;
//import com.budwk.app.sqfwV2.dto.dto.FireSafetyOnDayingRoadPdfDTO;
//import com.budwk.app.sqfwV2.dto.dto.centuryCity.SafeCheckTaskParamDataDTO;
//import com.budwk.app.sqfwV2.dto.dto.dayingRoad.AccommodatePeopleVo;
//import com.budwk.app.sqfwV2.dto.dto.dayingRoad.SandwichingVo;
//import com.budwk.app.sqfwV2.enums.RectificateTimeEnum;
//import com.budwk.app.sqfwV2.enums.dayingRoad.DayingRoadProblemEnum;
//import com.budwk.app.sqfwV2.enums.dayingRoad.OtherPatrolContentsEnum;
//import com.budwk.app.sqfwV2.service.ShopsBaseInfoService;
//import com.budwk.app.sys.services.SysDictService;
//import com.budwk.app.sys.vo.SysDictVO;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//import org.nutz.ioc.loader.annotation.Inject;
//import org.nutz.ioc.loader.annotation.IocBean;
//
//import java.util.List;
//import java.util.Map;
//import java.util.Optional;
//import java.util.concurrent.ThreadPoolExecutor;
//
///**
// * 大营路数据迁移功能实现类
// */
//
//@IocBean
//@Slf4j
//public class DayRoadGratioUtil {
//
//    @Inject
//    private SqfwFormSummaryService sqfwFormSummaryService;
//    @Inject
//    private SysDictService sysDictService;
//    @Inject
//    private ShopsBaseInfoService shopsBaseInfoService;
//    @Inject
//    private SqfwFormsummaryNewService sqfwFormsummaryNewService;
//    @Inject("taskQueryExecutor")
//    private ThreadPoolExecutor taskQueryExecutor;
//
//    /**
//     * 灭火器
//     * @param pdfDTO
//     * @param lastDataPdfDTO
//     */
//    public static void buildEquippedFire(FireSafetyOnDayingRoadPdfDTO pdfDTO, FireSafetyOnDayingRoadPdfDTO lastDataPdfDTO, Map<String, List<SysDictVO>> allDictMap) {
//        SafeCheckTaskParamDataDTO pe = pdfDTO.getWhetherEquippedFire();
//        if (pe == null) {
//            // 给默认值
//            pe = new SafeCheckTaskParamDataDTO();
//            pe.setKey(DayingRoadProblemEnum.FORE.getDefaultValue()).setFields(DayingRoadProblemEnum.FORE.getCode());
//        }
//        pe.setRiskLevel(DayingRoadPdfComponent.getDictName(pe.getRiskLevelCode(), null))
//                .setRectificationType(DayingRoadPdfComponent.getDictName(pe.getRectificationTypeCode(), null));
//        List<SafeCheckTaskParamDataDTO> otherPatrolContents = pdfDTO.getOtherPatrolContents();
//        OtherPatrolContentsEnum fEnum = OtherPatrolContentsEnum.FORETEEN;
//        SafeCheckTaskParamDataDTO sc = otherPatrolContents.stream().filter(e -> e.getFields().equals(fEnum.getCode())).findAny().get();
//        if ("true".equals(pe.getKey())) {
//            sc.setFields(fEnum.getCode()).setKey("false").setRiskDesc(fEnum.getDesc())
//                    .setRiskCode(fEnum.getNumber())
//                    .setRiskLevelCode(pe.getRiskLevelCode())
//                    .setRiskLevel(pe.getRiskLevel())
//                    .setRectificationType(pe.getRectificationType())
//                    .setRectificationTypeCode(pe.getRectificationTypeCode())
//                    .setRectificationMeasure(pe.getRectificationMeasure());
//            if (lastDataPdfDTO == null) {
//                return;
//            }
//            // 判断上次的数据是否已经是整改的
//            SafeCheckTaskParamDataDTO lastPe = lastDataPdfDTO.getWhetherEquippedFire();
//            // 上次的数据是已经配备灭火器
//            if (lastPe != null) {
//                if (!lastPe.getKey().equals(DayingRoadProblemEnum.FORE.getDefaultValue())) {
//                    pe.setIsRectification(true).setProblemDesc("未配备灭火器");
//                    sc.setIsRectification(true).setProblemDesc("未配备灭火器");
//                }
//            }
//            return;
//        }
//        sc.setFields(fEnum.getCode()).setKey("true").setRiskDesc(fEnum.getDesc()).setRiskCode(fEnum.getNumber())
//                .setRectificationMeasure(pe.getRectificationMeasure())
//                .setRiskLevelCode(pe.getRiskLevelCode())
//                .setRectificationTypeCode(pe.getRectificationTypeCode())
//                .setRiskLevel(pe.getRiskLevel())
//                .setRectificationType(pe.getRectificationType())
//                .setIsRectification(RectificateTimeEnum.isNowRectification(pe.getRectificationTypeCode()))
//                .setProblemDesc("未配备灭火器");
//        pe.setIsRectification(RectificateTimeEnum.isNowRectification(pe.getRectificationTypeCode())).setProblemDesc("未配备灭火器");
//    }
//
//    private static boolean isExistSandwichSafeProblem(SafeCheckTaskParamDataDTO s, String defaultValue) {
//        if (s == null) {
//            return false;
//        }
//        if (defaultValue.equals(s.getKey())) {
//            return true;
//        }
//        return false;
//    }
//    private static boolean isLastExist(FireSafetyOnDayingRoadPdfDTO lastDataPdfDTO) {
//        if (lastDataPdfDTO == null) {
//            return false;
//        }
//        SandwichingVo lastS = lastDataPdfDTO.getSandwichConstructionUse();
//        if (lastS == null) {
//            return false;
//        }
//        return true;
//    }
//
//    /**
//     * 是否搭建夹层
//     * @param pdfDTO
//     * @param lastDataPdfDTO
//     */
//    public static void buildSandwichingVo(FireSafetyOnDayingRoadPdfDTO pdfDTO, FireSafetyOnDayingRoadPdfDTO lastDataPdfDTO, Map<String, List<SysDictVO>> allDictMap) {
//        SandwichingVo s = pdfDTO.getSandwichConstructionUse();
//        if (s == null) {
//            return;
//        }
//        // 1 夹层楼板
//        SafeCheckTaskParamDataDTO m = s.getMezzaninFfloorSlab();
//        if (isExistSandwichSafeProblem(m, DictConstants.MEZZANINE_FLOOR_SLAB_COMBUSTIBLE)) {
//            m.setIsRectification(RectificateTimeEnum.isNowRectification(m.getRectificationTypeCode()))
//                    .setProblemDesc("夹层楼板为可燃材料");
//        } else {
//            if (isLastExist(lastDataPdfDTO)) {
//                SandwichingVo lastS = lastDataPdfDTO.getSandwichConstructionUse();
//                if (isExistSandwichSafeProblem(lastS.getMezzaninFfloorSlab(), DictConstants.MEZZANINE_FLOOR_SLAB_COMBUSTIBLE)) {
//                    m.setIsRectification(true).setProblemDesc("夹层楼板为可燃材料");
//                }
//            }
//        }
//        // 2 楼梯建筑材料
//        SafeCheckTaskParamDataDTO mbm = s.getStaircaseBuildingMaterials();
//        if (isExistSandwichSafeProblem(mbm, DictConstants.STAIRCASE_BUILD_MATERIALS_COMBUSTIBLE)) {
//            mbm.setIsRectification(RectificateTimeEnum.isNowRectification(mbm.getRectificationTypeCode()))
//                    .setProblemDesc("楼梯建筑材料为可燃材料");
//        } else {
//            if (isLastExist(lastDataPdfDTO)) {
//                SandwichingVo lastS = lastDataPdfDTO.getSandwichConstructionUse();
//                if (isExistSandwichSafeProblem(lastS.getStaircaseBuildingMaterials(), DictConstants.STAIRCASE_BUILD_MATERIALS_COMBUSTIBLE)) {
//                    mbm.setIsRectification(true).setProblemDesc("楼梯建筑材料为可燃材料");
//                }
//            }
//        }
//    }
//
//    // 是否存在住人问题
//    private static boolean existAccommodatePeopleProblem(String residentialType) {
//        if (StringUtils.isEmpty(residentialType)) {
//            return false;
//        }
//        if (residentialType.equals(DictConstants.RESIDENTS_FORM_STAY_STORE)
//                || residentialType.equals(DictConstants.RESIDENTS_FORM_IN_AND_OUT)
//                || residentialType.equals(DictConstants.RESIDENTS_FORM_DWELLING)
//                || residentialType.equals(DictConstants.RESIDENTS_FORM_OTHER)) {
//            return true;
//        }
//        return false;
//    }
//
//    public static String getDictName(List<SysDictVO> sysDictVOS, String code) {
//        Optional<SysDictVO> optional = sysDictVOS.stream().filter(e -> code.equals(e.getCode())).findFirst();
//        if (optional.isPresent()) {
//            return optional.get().getName();
//        }
//        return null;
//    }
//
//    /**
//     * 是否住人
//     * @param a
//     * @param lastDataPdfDTO
//     */
//    public static void buildAccommodatePeopleVo(AccommodatePeopleVo a, FireSafetyOnDayingRoadPdfDTO lastDataPdfDTO, Map<String, List<SysDictVO>> allDictMap) {
//        if (a == null) {
//            return;
//        }
//        String residentialType = a.getResidentialType();
//        List<SysDictVO> sysDictVOS = allDictMap.get(DictConstants.RESIDENTS_FORM);
//        if (existAccommodatePeopleProblem(a.getResidentialType())) {
//            a.setProblemDesc("该场所的住人形式为" + getDictName(sysDictVOS, residentialType));
//            a.setIsRectification(RectificateTimeEnum.isNowRectification(a.getRectificateType()));
//            return;
//        }
//
//        if (residentialType.equals(DictConstants.RESIDENTS_FORM_STAY_NOPERSON)
//                || residentialType.equals(DictConstants.RESIDENTS_FORM_RECTIFIED)) {
//            if (lastDataPdfDTO != null) {
//                AccommodatePeopleVo lastA = lastDataPdfDTO.getAccommodatePeople();
//                if (lastA != null) {
//                    if (existAccommodatePeopleProblem(lastA.getResidentialType())) {
//                        a.setProblemDesc("该场所的住人形式为" + getDictName(sysDictVOS, residentialType));
//                        a.setIsRectification(true);
//                    }
//                }
//            }
//        }
//    }
//
//    /**
//     * 灭火器
//     * @param pdfDTO
//     * @param lastDataPdfDTO
//     */
//    public static void buildEquippedFire(FireSafetyOnDayingRoadPdfDTO pdfDTO, FireSafetyOnDayingRoadPdfDTO lastDataPdfDTO) {
//        SafeCheckTaskParamDataDTO pe = pdfDTO.getWhetherEquippedFire();
//        if (pe == null) {
//            // 给默认值
//            pe = new SafeCheckTaskParamDataDTO();
//            pe.setKey(DayingRoadProblemEnum.FORE.getDefaultValue()).setFields(DayingRoadProblemEnum.FORE.getCode());
//        }
//        pe.setRiskLevel(DayingRoadPdfComponent.getDictName(pe.getRiskLevelCode(), null))
//                .setRectificationType(DayingRoadPdfComponent.getDictName(pe.getRectificationTypeCode(), null));
//        List<SafeCheckTaskParamDataDTO> otherPatrolContents = pdfDTO.getOtherPatrolContents();
//        OtherPatrolContentsEnum fEnum = OtherPatrolContentsEnum.FORETEEN;
//        SafeCheckTaskParamDataDTO sc = otherPatrolContents.stream().filter(e -> e.getFields().equals(fEnum.getCode())).findAny().get();
//        if ("true".equals(pe.getKey())) {
//            sc.setFields(fEnum.getCode()).setKey("false").setRiskDesc(fEnum.getDesc())
//                    .setRiskCode(fEnum.getNumber())
//                    .setRiskLevelCode(pe.getRiskLevelCode())
//                    .setRiskLevel(pe.getRiskLevel())
//                    .setRectificationType(pe.getRectificationType())
//                    .setRectificationTypeCode(pe.getRectificationTypeCode())
//                    .setRectificationMeasure(pe.getRectificationMeasure());
//            if (lastDataPdfDTO == null) {
//                return;
//            }
//            // 判断上次的数据是否已经是整改的
//            SafeCheckTaskParamDataDTO lastPe = lastDataPdfDTO.getWhetherEquippedFire();
//            // 上次的数据是已经配备灭火器
//            if (lastPe != null) {
//                if (!lastPe.getKey().equals(DayingRoadProblemEnum.FORE.getDefaultValue())) {
//                    pe.setIsRectification(true).setProblemDesc("未配备灭火器");
//                    sc.setIsRectification(true).setProblemDesc("未配备灭火器");
//                }
//            }
//            return;
//        }
//        sc.setFields(fEnum.getCode()).setKey("true").setRiskDesc(fEnum.getDesc()).setRiskCode(fEnum.getNumber())
//                .setRectificationMeasure(pe.getRectificationMeasure())
//                .setRiskLevelCode(pe.getRiskLevelCode())
//                .setRectificationTypeCode(pe.getRectificationTypeCode())
//                .setRiskLevel(pe.getRiskLevel())
//                .setRectificationType(pe.getRectificationType())
//                .setIsRectification(RectificateTimeEnum.isNowRectification(pe.getRectificationTypeCode()))
//                .setProblemDesc("未配备灭火器");
//        pe.setIsRectification(RectificateTimeEnum.isNowRectification(pe.getRectificationTypeCode())).setProblemDesc("未配备灭火器");
//    }
//
//    /**
//     * 电气线路情况
//     */
//    public static void buildElectricalCircuitSituation(FireSafetyOnDayingRoadPdfDTO pdfDTO, FireSafetyOnDayingRoadPdfDTO lastDataPdfDTO, Map<String, List<SysDictVO>> allDictMap) {
//        SafeCheckTaskParamDataDTO se = pdfDTO.getElectricalCircuitSituation();
//        if (se == null) {
//            return;
//        }
//        String key = se.getKey();
//        if (DictComponent.electricalCircuitSituationList().contains(key)) {
//            List<SysDictVO> sysDictVOS = allDictMap.get(DictConstants.ELECTRICAL_CIRCUIT_SITUATION);
//            String dictName = getDictName(sysDictVOS, key);
//            se.setIsRectification(RectificateTimeEnum.isNowRectification(se.getRectificationTypeCode())).setProblemDesc("电气线路" + dictName);
//            return;
//        }
//        // 解析上次的数据
//        if (lastDataPdfDTO == null) {
//            return;
//        }
//        SafeCheckTaskParamDataDTO lastSe = lastDataPdfDTO.getElectricalCircuitSituation();
//        if (lastSe == null) {
//            return;
//        }
//        if (DictComponent.electricalCircuitSituationList().contains(lastSe.getKey())) {
//            List<SysDictVO> sysDictVOS = allDictMap.get(DictConstants.ELECTRICAL_CIRCUIT_SITUATION);
//            se.setIsRectification(true).setProblemDesc("电气线路" + getDictName(sysDictVOS, key));
//        }
//    }
//    /**
//     * 电动自行车使用情况
//     */
//    public static void buildElectricBicyclesUse(FireSafetyOnDayingRoadPdfDTO pdfDTO, FireSafetyOnDayingRoadPdfDTO lastDataPdfDTO, Map<String, List<SysDictVO>> allDictMap) {
//        SafeCheckTaskParamDataDTO s = pdfDTO.getElectricBicyclesUse();
//        if (s == null) {
//            return;
//        }
//        List<String> bicyclesIndoor = List.of(DictConstants.BICYCLES_INDOOR, DictConstants.BICYCLES_OUTDOOR, DictConstants.BICYCLES_FLYWIRE, DictConstants.BICYCLES_OTHER);
//        if (bicyclesIndoor.contains(s.getKey())) {
//            String dictName = getDictName(allDictMap.get(DictConstants.USAGE_ELECTRIC_BICYCLES), s.getKey());
//            s.setIsRectification(RectificateTimeEnum.isNowRectification(s.getRectificationTypeCode())).setProblemDesc("电动自行车进行" + dictName);
//            return;
//        }
//        // 解析上次的数据
//        if (lastDataPdfDTO == null) {
//            return;
//        }
//        SafeCheckTaskParamDataDTO lastSe = lastDataPdfDTO.getElectricBicyclesUse();
//        if (lastSe == null) {
//            return;
//        }
//        if (bicyclesIndoor.contains(lastSe.getKey())) {
//            String dictName = getDictName(allDictMap.get(DictConstants.USAGE_ELECTRIC_BICYCLES), s.getKey());
//            s.setIsRectification(true).setProblemDesc("电动自行车进行" + dictName);
//        }
//    }
//
//    /**
//     * 明火、高温加热、取暖设备等的使用地点
//     */
//    public static void buildFireHighUsageArea(FireSafetyOnDayingRoadPdfDTO pdfDTO, FireSafetyOnDayingRoadPdfDTO lastDataPdfDTO) {
//        SafeCheckTaskParamDataDTO s = pdfDTO.getFireHighUsageArea();
//        if (s == null) {
//            return;
//        }
//        List<String> list = List.of(DictConstants.FLAMES_HIGH_HEAT_SAND, DictConstants.FLAMES_HIGH_HEAT_OTHER);
//        if (list.contains(s.getKey())) {
//            s.setIsRectification(RectificateTimeEnum.isNowRectification(s.getRectificationTypeCode())).setProblemDesc("使用明火、高温加热、取暖设备");
//            return;
//        }
//        // 解析上次的数据
//        if (lastDataPdfDTO == null) {
//            return;
//        }
//        SafeCheckTaskParamDataDTO lastSe = lastDataPdfDTO.getFireHighUsageArea();
//        if (lastSe == null) {
//            return;
//        }
//        if (list.contains(lastSe.getKey())) {
//            s.setIsRectification(true).setProblemDesc("使用明火、高温加热、取暖设备");
//        }
//    }
//
//
//    /**
//     * 是否存放易燃易爆危险品
//     */
//    public static void buildCombustiblEexplosive(FireSafetyOnDayingRoadPdfDTO pdfDTO, FireSafetyOnDayingRoadPdfDTO lastDataPdfDTO) {
//        SafeCheckTaskParamDataDTO s = pdfDTO.getIsCombustiblEexplosive();
//        if (s == null) {
//            return;
//        }
//        if (!DayingRoadProblemEnum.EIGHT.getDefaultValue().equals(s.getKey())) {
//            s.setIsRectification(RectificateTimeEnum.isNowRectification(s.getRectificationTypeCode())).setProblemDesc("存放有易燃易爆危险品");
//            return;
//        }
//        // 解析上次的数据
//        if (lastDataPdfDTO == null) {
//            return;
//        }
//        SafeCheckTaskParamDataDTO lastSe = lastDataPdfDTO.getIsCombustiblEexplosive();
//        if (lastSe == null) {
//            return;
//        }
//        if (!DayingRoadProblemEnum.EIGHT.getDefaultValue().equals(lastSe.getKey())) {
//            s.setIsRectification(true).setProblemDesc("存放有易燃易爆危险品");
//        }
//    }
//
//    /**
//     * 是否存放易燃易爆危险品
//     */
//    public static void buildOtherDanger(FireSafetyOnDayingRoadPdfDTO pdfDTO, FireSafetyOnDayingRoadPdfDTO lastDataPdfDTO) {
//        List<SafeCheckTaskParamDataDTO> others = pdfDTO.getOtherHiddenDangers();
//        if (others == null || others.size() == 0) {
//            return;
//        }
//        SafeCheckTaskParamDataDTO s = others.get(others.size() - 1);
//        if (!DayingRoadProblemEnum.TWELVE.getDefaultValue().equals(s.getKey())) {
//            s.setIsRectification(RectificateTimeEnum.isNowRectification(s.getRectificationTypeCode())).setProblemDesc("其他隐患");
//            return;
//        }
//        // 解析上次的数据
//        if (lastDataPdfDTO == null) {
//            return;
//        }
//        List<SafeCheckTaskParamDataDTO> lastOthers = lastDataPdfDTO.getOtherHiddenDangers();
//        if (lastOthers == null || lastOthers.size() == 0) {
//            return;
//        }
//        SafeCheckTaskParamDataDTO lasts = lastOthers.get(lastOthers.size() - 1);
//        if (!DayingRoadProblemEnum.TWELVE.getDefaultValue().equals(lasts.getKey())) {
//            s.setIsRectification(true).setProblemDesc("其他隐患");
//        }
//    }
//
//    /**
//     * 是否存放易燃易爆危险品
//     */
//    public static void buildFireOtherIssues(FireSafetyOnDayingRoadPdfDTO pdfDTO, FireSafetyOnDayingRoadPdfDTO lastDataPdfDTO) {
//        SafeCheckTaskParamDataDTO fireOtherIssues = pdfDTO.getFireOtherIssues();
//        SafeCheckTaskParamDataDTO safe = DayingRoadProblemEnum.initData(DayingRoadProblemEnum.THIRTEEN);
//        if (fireOtherIssues == null) {
//            safe.setRectificationMeasure("无");
//            pdfDTO.setFireOtherIssues(safe);
//            return;
//        }
//        String rectificationMeasure = fireOtherIssues.getRectificationMeasure();
//        if (StringUtils.isEmpty(rectificationMeasure) || "无".equals(rectificationMeasure)) {
//            safe.setRectificationMeasure("无");
//            pdfDTO.setFireOtherIssues(safe);
//            // 解析上次的数据
//            if (lastDataPdfDTO == null) {
//                return;
//            }
//            SafeCheckTaskParamDataDTO lastSe = lastDataPdfDTO.getFireOtherIssues();
//            if (lastSe == null) {
//                return;
//            }
//            String lastRectificationMeasure = lastSe.getRectificationMeasure();
//            if (StringUtils.isEmpty(lastRectificationMeasure) || "无".equals(lastRectificationMeasure)) {
//                return;
//            }
//            safe.setIsRectification(true).setProblemDesc("消防设施的其他问题");
//            pdfDTO.setFireOtherIssues(safe);
//            return;
//        }
//        fireOtherIssues.setKey("true").setIsRectification(false).setProblemDesc("消防设施的其他问题");
//    }
//
//
//}
